<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.domoticz.com/index.php?action=history&amp;feed=atom&amp;title=Denon</id>
	<title>Denon - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.domoticz.com/index.php?action=history&amp;feed=atom&amp;title=Denon"/>
	<link rel="alternate" type="text/html" href="https://wiki.domoticz.com/index.php?title=Denon&amp;action=history"/>
	<updated>2026-09-18T22:43:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.domoticz.com/index.php?title=Denon&amp;diff=9310&amp;oldid=prev</id>
		<title>Henrivb: /* Relay-Net 8 channel LAN Relay and binary Input module */</title>
		<link rel="alternate" type="text/html" href="https://wiki.domoticz.com/index.php?title=Denon&amp;diff=9310&amp;oldid=prev"/>
		<updated>2017-06-27T17:01:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Relay-Net 8 channel LAN Relay and binary Input module&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= AV receiver Denon / Marantz =&lt;br /&gt;
Below a description how to integrate a Denon/Marantz receiver in Domoticz.&lt;br /&gt;
&lt;br /&gt;
All scripts were created and tested on a Denon AVR-X1000, for Marantz or other Denon models it might be required to make some small changes.&lt;br /&gt;
Goal is to make the setup and scripts compatible with both Makes and models.&lt;br /&gt;
&lt;br /&gt;
This page is based on information found on this page: [https://www.domoticz.com/forum/viewtopic.php?f=31&amp;amp;t=11011&amp;amp;p=84413#p84408 forum] which contains a rough sketch how to implement your Denon into domoticz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Basic concept=&lt;br /&gt;
The AV receiver is controlled by dummy devices configured in Domoticz. Although the actions can be triggered in different ways I chose to create one Lua script which is triggered on a Domoticz device change. This way everything is in one place and actions triggered by the dummy device directly caused unjust errors in the Domoticz logs.&lt;br /&gt;
&lt;br /&gt;
The synchronization is done via a bash scripts which runs every 60 seconds via the cron tab. For updating the Power status an additional dummy device is configured as a slave to the Power Switch to prevent loop switching.&lt;br /&gt;
&lt;br /&gt;
The goal is to match the behavior of the receiver and Domoticz as closely as possible, e.g in my case I customized the source inputs names matching my specific application and adopting these into Domoticz. In addition I was able to match the sound levels from the device to the domoticz control.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Currently supported functions:&lt;br /&gt;
&lt;br /&gt;
-- Power On/Off&lt;br /&gt;
&lt;br /&gt;
-- Mute On/Off&lt;br /&gt;
      &lt;br /&gt;
-- Volume +/-&lt;br /&gt;
&lt;br /&gt;
-- Select source input&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
To be implemented:&lt;br /&gt;
&lt;br /&gt;
-- Run as service (higher frequent than 60 seconds)&lt;br /&gt;
&lt;br /&gt;
-- Siri support&lt;br /&gt;
&lt;br /&gt;
-- ....&lt;br /&gt;
&lt;br /&gt;
=Prerequisites=&lt;br /&gt;
bc command must be installed&lt;br /&gt;
&lt;br /&gt;
=Setup=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Input sources configuration:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[file:DenonSources.JPG]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Denon receiver==&lt;br /&gt;
&lt;br /&gt;
1. Setup custom input source names&lt;br /&gt;
   Setup &amp;gt; Inputs &amp;gt; Source Rename &amp;gt;&lt;br /&gt;
            CBL/SAT = AMINO&lt;br /&gt;
            DVD     = KODI&lt;br /&gt;
            Blu-ray = CHROMECAST&lt;br /&gt;
            GAME    = PLAYSTATION3&lt;br /&gt;
&lt;br /&gt;
2. Configure volume display&lt;br /&gt;
   Setup &amp;gt; Audio &amp;gt; Volume &amp;gt;&lt;br /&gt;
            Scale   = 0-98&lt;br /&gt;
&lt;br /&gt;
==Domoticz devices==&lt;br /&gt;
&lt;br /&gt;
1. Add Dummy devices in Domoticz&lt;br /&gt;
   Setup &amp;gt; Hardware &amp;gt; Type = &amp;quot;Dummy&amp;quot; &amp;gt; Add&lt;br /&gt;
&lt;br /&gt;
2. Create DENON_VOLUME&lt;br /&gt;
   Setup &amp;gt; Hardware &amp;gt; &amp;quot;Create Virtual Sensor&amp;quot; =&amp;gt;&lt;br /&gt;
            Name: &amp;quot;DENON_VOLUME&amp;quot;&lt;br /&gt;
            Sensor Type: &amp;quot;Dimmer&amp;quot;&lt;br /&gt;
            OK&lt;br /&gt;
&lt;br /&gt;
3. Create DENON_SOURCE&lt;br /&gt;
   Setup &amp;gt; Hardware &amp;gt; &amp;quot;Create Virtual Sensor&amp;quot; &amp;gt;&lt;br /&gt;
            Name: &amp;quot;DENON_SOURCE&amp;quot;&lt;br /&gt;
            Sensor Type: &amp;quot;Selector&amp;quot;&lt;br /&gt;
            OK&lt;br /&gt;
&lt;br /&gt;
4. Configure DENON_SOURCE&lt;br /&gt;
   Switches &amp;gt; &amp;quot;DENON_SOURCE&amp;quot; &amp;gt; Edit &amp;gt;&lt;br /&gt;
            Level 10 Name: &amp;quot;AMINO&amp;quot;&lt;br /&gt;
            Level 20 Name: &amp;quot;KODI&amp;quot;&lt;br /&gt;
            Level 30 Name: &amp;quot;CHROMECAST&amp;quot;&lt;br /&gt;
            Level 40 Name: &amp;quot;PLAYSTATION3&amp;quot;&lt;br /&gt;
            Save&lt;br /&gt;
&lt;br /&gt;
==Lua Script==&lt;br /&gt;
&lt;br /&gt;
1. Goto Domoticz &amp;gt; Setup &amp;gt; Events&lt;br /&gt;
&lt;br /&gt;
2. Select Lua&lt;br /&gt;
&lt;br /&gt;
3. Enter an &amp;quot;Event Name&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4. Copy script below into the editing field&lt;br /&gt;
&lt;br /&gt;
5. Change the values in the section &amp;quot;Definitions&amp;quot; to your specific values&lt;br /&gt;
&lt;br /&gt;
6. Select &amp;quot;Device&amp;quot; in stead of &amp;quot;All&amp;quot; &amp;#039;&amp;#039;&amp;#039;&amp;lt;==== IMPORTANT&amp;#039;&amp;#039;&amp;#039; otherwise you will get unjust errors in the Domoticz log.&lt;br /&gt;
&lt;br /&gt;
7. Make sure &amp;quot;Event active&amp;quot; is checked and save script &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Control AV receiver (Denon or Marantz)&lt;br /&gt;
-- &lt;br /&gt;
-- Author:  Bart77&lt;br /&gt;
-- Version: 1.2&lt;br /&gt;
-- &lt;br /&gt;
-- Credits:&lt;br /&gt;
-- TrixWood to provide a initial version on the forum&lt;br /&gt;
--&lt;br /&gt;
-- This script will execute actions triggered by virtual devices in Domoticz&lt;br /&gt;
-- to control a Denon/Marantz AV receiver.&lt;br /&gt;
-- &lt;br /&gt;
-- Currently supported functions:&lt;br /&gt;
-- Power On/Off     &lt;br /&gt;
-- Source Input select&lt;br /&gt;
-- Mute On/Off      &lt;br /&gt;
-- Volume +/-&lt;br /&gt;
--&lt;br /&gt;
-- 1.2 Removed DENON_POWER object, became obsolete by Input Source select&lt;br /&gt;
-- 1.1 Added update on Input Source select&lt;br /&gt;
-- 1.0 First release&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
-- Definitions&lt;br /&gt;
IP = &amp;#039;xxx.xxx.xxx.xxx&amp;#039;&lt;br /&gt;
RECEIVER_VOLUME = &amp;quot;DENON_VOLUME&amp;quot; -- Control MUTE and VOLUME&lt;br /&gt;
RECEIVER_SOURCE = &amp;quot;DENON_SOURCE&amp;quot; -- Control OFF and Select Input Source (= ON)&lt;br /&gt;
&lt;br /&gt;
-- Main script&lt;br /&gt;
commandArray = {}&lt;br /&gt;
&lt;br /&gt;
if devicechanged[RECEIVER_VOLUME] then -- MUTE and VOLUME&lt;br /&gt;
    if (otherdevices[RECEIVER_VOLUME] == &amp;quot;Off&amp;quot;) then&lt;br /&gt;
        os.execute (&amp;quot;curl http://&amp;quot; .. (IP) .. &amp;quot;/MainZone/index.put.asp?cmd0=PutVolumeMute%2Fon&amp;quot;);&lt;br /&gt;
        print (&amp;quot;Device:&amp;quot; .. RECEIVER_VOLUME .. &amp;quot; send command Mute = On&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
        NewLevel = otherdevices_svalues[RECEIVER_VOLUME] - 80 ; -- Apply offset from absolute to relative&lt;br /&gt;
        NewLevel = math.min(NewLevel, 9.5); -- Top Domoticz Scale  &lt;br /&gt;
        os.execute (&amp;quot;curl http://&amp;quot; .. (IP) .. &amp;quot;/MainZone/index.put.asp?cmd0=PutVolumeMute%2Foff&amp;quot;);&lt;br /&gt;
        os.execute (&amp;quot;curl http://&amp;quot; .. (IP) .. &amp;quot;/MainZone/index.put.asp?cmd0=PutMasterVolumeSet/&amp;quot; .. (NewLevel));&lt;br /&gt;
        print (&amp;quot;Device:&amp;quot; .. RECEIVER_VOLUME .. &amp;quot; send command Mute = Off; Set Volume = &amp;quot; .. NewLevel);&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
elseif devicechanged[RECEIVER_SOURCE] then -- OFF or INPUT SOURCE SELECT&lt;br /&gt;
    -- Translate Selector Switch Level to SourceToSet&lt;br /&gt;
    if (otherdevices_svalues[RECEIVER_SOURCE] == &amp;#039;0&amp;#039; ) then&lt;br /&gt;
        SourceToSet = &amp;quot;Off&amp;quot;;&lt;br /&gt;
    elseif (otherdevices_svalues[RECEIVER_SOURCE] == &amp;#039;10&amp;#039; ) then&lt;br /&gt;
        SourceToSet = &amp;quot;SAT/CBL&amp;quot;;&lt;br /&gt;
        SourceCustomName = &amp;quot;AMINO&amp;quot;;&lt;br /&gt;
    elseif (otherdevices_svalues[RECEIVER_SOURCE] == &amp;#039;20&amp;#039; ) then&lt;br /&gt;
        SourceToSet = &amp;quot;DVD&amp;quot;;&lt;br /&gt;
        SourceCustomName = &amp;quot;KODI&amp;quot;;&lt;br /&gt;
    elseif (otherdevices_svalues[RECEIVER_SOURCE] == &amp;#039;30&amp;#039; ) then&lt;br /&gt;
        SourceToSet = &amp;quot;BD&amp;quot;;&lt;br /&gt;
        SourceCustomName = &amp;quot;CHROMECAST&amp;quot;;&lt;br /&gt;
    elseif (otherdevices_svalues[RECEIVER_SOURCE] == &amp;#039;40&amp;#039; ) then&lt;br /&gt;
        SourceToSet = &amp;quot;GAME&amp;quot;;&lt;br /&gt;
        SourceCustomName = &amp;quot;PLAYSTATION3&amp;quot;;&lt;br /&gt;
    else &lt;br /&gt;
        SourceToSet = &amp;quot;Unknown&amp;quot;;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if ( SourceToSet == &amp;#039;Unknown&amp;#039; ) then&lt;br /&gt;
        print (&amp;quot;WARNING: Device:&amp;quot; .. RECEIVER_SOURCE .. &amp;quot; unkown source input&amp;quot; );&lt;br /&gt;
    elseif ( SourceToSet == &amp;#039;Off&amp;#039; ) then -- Switch Off receiver&lt;br /&gt;
        os.execute (&amp;quot;curl http://&amp;quot; .. (IP) .. &amp;quot;/MainZone/index.put.asp?cmd0=PutZone_OnOff%2FOFF&amp;quot; );&lt;br /&gt;
        print (&amp;quot;Device:&amp;quot; .. RECEIVER_SOURCE .. &amp;quot; send command set source input = OFF&amp;quot;);        &lt;br /&gt;
    else -- SwitchSource to SourceToSet&lt;br /&gt;
        os.execute (&amp;quot;curl http://&amp;quot; .. (IP) .. &amp;quot;/MainZone/index.put.asp?cmd0=PutZone_InputFunction%2F&amp;quot; .. (SourceToSet) );&lt;br /&gt;
        print (&amp;quot;Device:&amp;quot; .. RECEIVER_SOURCE .. &amp;quot; send command set source input = &amp;quot; .. (SourceToSet) .. &amp;quot;. =&amp;gt; &amp;quot; .. (SourceCustomName) );&lt;br /&gt;
    end&lt;br /&gt;
end &lt;br /&gt;
&lt;br /&gt;
return commandArray&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bash Script==&lt;br /&gt;
&lt;br /&gt;
1) Create a bash file in /home/pi/domoticz/scripts&lt;br /&gt;
&lt;br /&gt;
2) Copy the script below into the file and save&lt;br /&gt;
&lt;br /&gt;
3) Add this script into to the crontab&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# ---------- Declarations ---------------------------------------------------------------------&lt;br /&gt;
# Script&lt;br /&gt;
VERSION=&amp;quot;1.0&amp;quot;							# Script version&lt;br /&gt;
LOG=&amp;quot;/dev/tty&amp;quot;					    	# Default log to terminal&lt;br /&gt;
&lt;br /&gt;
# Settings Receiver = Device&lt;br /&gt;
DEVICE_IP=&amp;quot;xxx.xxx.xxx.xxx&amp;quot;           	# Device IP Address&lt;br /&gt;
DEVICE_TYPE=&amp;quot;Undefined&amp;quot;             	# Device type read from device&lt;br /&gt;
DEVICE_STATUS=&amp;quot;Undefined&amp;quot;           	# Device status read from device &lt;br /&gt;
DEVICE_VOLUME_SCALE=&amp;quot;Undefined&amp;quot;			# Volume scale [Relative/Abolute] &amp;lt;=== Only display value , value read will always be Relative&lt;br /&gt;
DEVICE_VOLUME_OFFSET=80					# Volume offset [dB to Abolute] &lt;br /&gt;
DEVICE_XML=(&lt;br /&gt;
	&amp;#039;Deviceinfo.xml&amp;#039;&lt;br /&gt;
	&amp;#039;formMainZone_MainZoneXmlStatus.xml&amp;#039;&lt;br /&gt;
	&amp;#039;formMainZone_MainZoneXml.xml&amp;#039;&lt;br /&gt;
	&amp;#039;formNetAudio_StatusXml.xml&amp;#039;&lt;br /&gt;
)  										# Source types read from device&lt;br /&gt;
   &lt;br /&gt;
# Settings Domoticz&lt;br /&gt;
DOMO_IP=&amp;quot;192.168.77.10&amp;quot;             	# Domoticz IP Address&lt;br /&gt;
DOMO_PORT=&amp;quot;8080&amp;quot;                    	# Domoticz Port&lt;br /&gt;
DOMO_DEVICE_POWER_IDX=&amp;quot;115&amp;quot;           	# On/Off    		(Switch) IDX&lt;br /&gt;
DOMO_DEVICE_POWER_STATUS_IDX=&amp;quot;123&amp;quot;		# Status			(Switch) IDX slave (On/Off)&lt;br /&gt;
DOMO_DEVICE_VOL_ABS_IDX=&amp;quot;122&amp;quot;        	# Absolute Volume 	(Slider) IDX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------- Usage ---------------------------------------------------------------------&lt;br /&gt;
SCRIPT_USAGE()&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;usage: avreceiver.sh [-h] {-l]&lt;br /&gt;
&lt;br /&gt;
This script will synchronize the status of a AV receiver (Denon / Marantz) with Domoticz.&lt;br /&gt;
&lt;br /&gt;
Supported device types:&lt;br /&gt;
	DENON &amp;#039;*AVR-X1000&amp;#039;&lt;br /&gt;
	...  Additional models to be added/tested&lt;br /&gt;
&lt;br /&gt;
Version:               $VERSION&lt;br /&gt;
Author:                BDV77&lt;br /&gt;
&lt;br /&gt;
[-h]    = Help, display usage.&lt;br /&gt;
[-l]    = Log to file &amp;#039;avreceiver.log&amp;#039; instead of terminal&lt;br /&gt;
&lt;br /&gt;
Version history:&lt;br /&gt;
1.0	First release&lt;br /&gt;
0.1	Based on Denon script of Trixwood V0.3&lt;br /&gt;
&lt;br /&gt;
to do: 	&lt;br /&gt;
	Get source input names from device&lt;br /&gt;
	Get custom source input names from device&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# ---------- Read input arguments ---------------------------------------------------------------------&lt;br /&gt;
while [ &amp;quot;$1&amp;quot; != &amp;quot;&amp;quot; ]; do&lt;br /&gt;
    case $1 in&lt;br /&gt;
        -h | --help )           SCRIPT_USAGE&lt;br /&gt;
                                exit&lt;br /&gt;
                                ;;&lt;br /&gt;
        -l )					LOG=&amp;quot;avreceiver.log&amp;quot;&lt;br /&gt;
                                ;;&lt;br /&gt;
        * )                     SCRIPT_USAGE&lt;br /&gt;
                                exit 1&lt;br /&gt;
    esac&lt;br /&gt;
    shift&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# ---------- Functions ------------------------------------------------------------------------- &lt;br /&gt;
&lt;br /&gt;
# ---------- Main function --------------------------------------------------------------------- &lt;br /&gt;
echo &amp;quot;$(date +%k:%M:%S.%N) Started avreceiver.sh&amp;quot; &amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Check if Domiticz status is online and service is running&lt;br /&gt;
PINGTIME=$(ping -c 1 -q &amp;quot;$DOMO_IP&amp;quot; | awk -F&amp;quot;/&amp;quot; &amp;#039;{print $5}&amp;#039; | xargs)&lt;br /&gt;
if ! expr $PINGTIME &amp;#039;&amp;gt;&amp;#039; 0 &amp;amp;&amp;gt; /dev/null ; then&lt;br /&gt;
	echo &amp;quot;Domoticz status = Offline [responsetime = $PINGTIME]&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
	exit&lt;br /&gt;
fi&lt;br /&gt;
if [[ &amp;quot;$(curl -s &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&amp;amp;param=getversion&amp;quot; | grep &amp;quot;Domoticz&amp;quot;)&amp;quot; == &amp;quot;&amp;quot; ]] ; then&lt;br /&gt;
	echo &amp;quot;Domoticz status = Onine but Domoticz service is not running&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
	exit&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Domoticz status = Online [responsetime = $PINGTIME] and Domoticz service is running&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Check if device is online and verify identity&lt;br /&gt;
PINGTIME=$(ping -c 1 -q &amp;quot;$DEVICE_IP&amp;quot; | awk -F&amp;quot;/&amp;quot; &amp;#039;{print $5}&amp;#039; | xargs)&lt;br /&gt;
if ! expr PINGTIME &amp;#039;&amp;gt;&amp;#039; 0 &amp;amp;&amp;gt; /dev/null ; then&lt;br /&gt;
	echo &amp;quot;Device = Offline [responsetime = $PINGTIME]&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
	# Set status to offline&lt;br /&gt;
	# Define default offline status in Domoticz&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Device = Online [responsetime = $PINGTIME]&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Get device type and try to identity&lt;br /&gt;
i=0&lt;br /&gt;
for XML in ${DEVICE_XML[@]}; do # Load device data&lt;br /&gt;
	XML_DATA[$i]=&amp;quot;$(curl -s &amp;quot;http://$DEVICE_IP/goform/$XML&amp;quot;)&amp;quot;&lt;br /&gt;
	i=$(($i+1))&lt;br /&gt;
done&lt;br /&gt;
DEVICE_TYPE=$(echo ${XML_DATA[0]} | grep -oPm1 &amp;quot;(?&amp;lt;=&amp;lt;ModelName&amp;gt;)[^&amp;lt;]+&amp;quot;)&lt;br /&gt;
case $DEVICE_TYPE in&lt;br /&gt;
    &amp;quot;&amp;quot;) #Nothing found --&amp;gt; not a AV receiver&lt;br /&gt;
		echo &amp;quot;No device type &amp;lt;ModelName&amp;gt; could be retreived from $DEVICE_IP/goform/Deviceinfo.xml&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
		exit&lt;br /&gt;
        ;;&lt;br /&gt;
    &amp;quot;*AVR-X1000&amp;quot;) #Add other device types that are identical&lt;br /&gt;
		echo Succesfully identified a supported device type: $DEVICE_TYPE &amp;gt;&amp;gt; $LOG&lt;br /&gt;
        ;;&lt;br /&gt;
#    &amp;quot;&amp;quot;) #Add other device types here and define differences!&lt;br /&gt;
#        ...&lt;br /&gt;
#        ;;&lt;br /&gt;
    *) #Default to *AVR-X1000??&lt;br /&gt;
        echo &amp;quot;An unsupported device type &amp;lt;ModelName&amp;gt; was retreived from $DEVICE_IP/goform/Deviceinfo.xml = $DEVICE_TYPE, Default to *AVR-X1000&amp;quot;  &amp;gt;&amp;gt; $LOG&lt;br /&gt;
		DEVICE_TYPE=&amp;quot;*AVR-X1000&amp;quot;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------- Update Power (via slave device) --------------------------------------------------------------------- &lt;br /&gt;
POWER_STATUS=$(echo ${XML_DATA[1]} | grep -oPm1 &amp;quot;(?&amp;lt;=&amp;lt;Power&amp;gt;&amp;lt;value&amp;gt;)[^&amp;lt;]+&amp;quot;) #Read current values from xml data&lt;br /&gt;
POWER_STATUS=&amp;quot;$(tr &amp;#039;[:lower:]&amp;#039; &amp;#039;[:upper:]&amp;#039; &amp;lt;&amp;lt;&amp;lt; ${POWER_STATUS:0:1})$(tr &amp;#039;[:upper:]&amp;#039; &amp;#039;[:lower:]&amp;#039; &amp;lt;&amp;lt;&amp;lt; ${POWER_STATUS:1})&amp;quot; # Convert to Capitalized, syntax from device is inconsistant&lt;br /&gt;
&lt;br /&gt;
POWER_OLD=$(curl -s &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&amp;amp;rid=$DOMO_DEVICE_POWER_IDX&amp;quot; | grep &amp;quot;Status&amp;quot; | cut -d&amp;#039;&amp;quot;&amp;#039; -f4 ) # Get old values from Domoticz&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$POWER_STATUS&amp;quot; != &amp;quot;$POWER_OLD&amp;quot; ] ; then #Only update in case of difference&lt;br /&gt;
	curl -s -i -H &amp;quot;Accept: application/json&amp;quot; &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&amp;amp;param=switchlight&amp;amp;idx=$DOMO_DEVICE_POWER_STATUS_IDX&amp;amp;switchcmd=$POWER_STATUS&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
	echo &amp;quot;Domoticz Object: $DOMO_DEVICE_POWER_STATUS_IDX (POWER), updated to value = $POWER_STATUS&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;Domoticz Object: $DOMO_DEVICE_POWER_STATUS_IDX (POWER) in sync, value = $POWER_STATUS&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# ---------- Update Mute and Volume --------------------------------------------------------------------- &lt;br /&gt;
DEVICE_MUTE=$(echo ${XML_DATA[1]} | grep -oPm1 &amp;quot;(?&amp;lt;=&amp;lt;Mute&amp;gt;&amp;lt;value&amp;gt;)[^&amp;lt;]+&amp;quot;);&lt;br /&gt;
DEVICE_MUTE=&amp;quot;$(tr &amp;#039;[:lower:]&amp;#039; &amp;#039;[:upper:]&amp;#039; &amp;lt;&amp;lt;&amp;lt; ${DEVICE_MUTE:0:1})$(tr &amp;#039;[:upper:]&amp;#039; &amp;#039;[:lower:]&amp;#039; &amp;lt;&amp;lt;&amp;lt; ${DEVICE_MUTE:1})&amp;quot; # Convert to Capitalized, syntax from device is inconsistant&lt;br /&gt;
DEVICE_VOLUME_REL=$(echo ${XML_DATA[1]} | grep -oPm1 &amp;quot;(?&amp;lt;=&amp;lt;MasterVolume&amp;gt;&amp;lt;value&amp;gt;)[^&amp;lt;]+&amp;quot;) # Volume value always read relative from device&lt;br /&gt;
if [[ &amp;quot;$DEVICE_VOLUME_REL&amp;quot; == &amp;quot;--&amp;quot; ]]; then DEVICE_VOLUME_REL=$(echo &amp;quot;-$DEVICE_VOLUME_OFFSET&amp;quot; | bc) ; fi # Convert volume value in case &amp;quot;--&amp;quot;&lt;br /&gt;
DEVICE_VOLUME_ABS=$(echo &amp;quot;$DEVICE_VOLUME_OFFSET + &amp;quot;$DEVICE_VOLUME_REL&amp;quot;&amp;quot; | bc) # Calculate absolute volume value&lt;br /&gt;
DEVICE_VOLUME_ABS=$(printf &amp;quot;%.*f\n&amp;quot; 0 $DEVICE_VOLUME_ABS) # Round value, due to resolution of Domoticz slider&lt;br /&gt;
SLIDER_OLD=$(curl -s &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=devices&amp;amp;rid=$DOMO_DEVICE_VOL_ABS_IDX&amp;quot; | grep &amp;quot;Data&amp;quot; | cut -d&amp;#039;&amp;quot;&amp;#039; -f4 ); &lt;br /&gt;
if 	[[ &amp;quot;$SLIDER_OLD&amp;quot; == &amp;quot;Off&amp;quot; ]]; then #Invert Off status of slider to Mute Status On&lt;br /&gt;
	MUTE_OLD=&amp;quot;On&amp;quot;&lt;br /&gt;
else #Invert On status of slider to Mute Status Off&lt;br /&gt;
	MUTE_OLD=&amp;quot;Off&amp;quot;&lt;br /&gt;
	if [[ &amp;quot;$SLIDER_OLD&amp;quot; != &amp;quot;On&amp;quot; ]]; then #if actual value is displayed, read value&lt;br /&gt;
		VOLUME_ABS_OLD=$(echo &amp;quot;$SLIDER_OLD&amp;quot; | grep -Eo &amp;#039;[0-9]{1,4}&amp;#039;);&lt;br /&gt;
	fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$DEVICE_MUTE&amp;quot; != &amp;quot;$MUTE_OLD&amp;quot; ]]; then #Only update in case of difference&lt;br /&gt;
	curl -s -i -H &amp;quot;Accept: application/json&amp;quot; &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&amp;amp;param=switchlight&amp;amp;idx=$DOMO_DEVICE_VOL_ABS_IDX&amp;amp;switchcmd=$MUTE_OLD&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
	echo &amp;quot;Domoticz Object: $DOMO_DEVICE_VOL_ABS_IDX (Mute), updated to value = $MUTE_OLD&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;Domoticz Object: $DOMO_DEVICE_VOL_ABS_IDX (Mute) in sync, value = $MUTE_OLD&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
fi&lt;br /&gt;
if [[ &amp;quot;$DEVICE_VOLUME_ABS&amp;quot; != &amp;quot;$VOLUME_ABS_OLD&amp;quot; ]] &amp;amp;&amp;amp; [[ &amp;quot;$DEVICE_MUTE&amp;quot; == &amp;quot;Off&amp;quot; ]]; then #Only update in case of difference and Mute = Off&lt;br /&gt;
	curl -s -i -H &amp;quot;Accept: application/json&amp;quot; &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&amp;amp;param=switchlight&amp;amp;idx=$DOMO_DEVICE_VOL_ABS_IDX&amp;amp;switchcmd=Set%20Level&amp;amp;level=$(($DEVICE_VOLUME_ABS + 1))&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
	if [ &amp;quot;$DEVICE_VOLUME_ABS&amp;quot; = 0 ] ; then # If set to zero correct for auto switch to mute &amp;lt;=== THIS WILL SWICH EACH TIME BECAUSE VALUE ZERO WILL NOT BE DISPLAYED :(&lt;br /&gt;
		curl -s -i -H &amp;quot;Accept: application/json&amp;quot; &amp;quot;http://$DOMO_IP:$DOMO_PORT/json.htm?type=command&amp;amp;param=switchlight&amp;amp;idx=$DOMO_DEVICE_VOL_ABS_IDX&amp;amp;switchcmd=On&amp;quot; &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
	fi&lt;br /&gt;
	echo &amp;quot;Domoticz Object: $DOMO_DEVICE_VOL_ABS_IDX (Volume), updated to value = $DEVICE_VOLUME_ABS&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;Domoticz Object: $DOMO_DEVICE_VOL_ABS_IDX (Volume) in sync, value = $DEVICE_VOLUME_ABS&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
echo &amp;quot;$(date +%k:%M:%S.%N) Stoppped avreceiver.sh&amp;quot; &amp;gt;&amp;gt; $LOG&lt;br /&gt;
&lt;br /&gt;
exit 0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Domoticz]]&lt;br /&gt;
[[Category:Setup]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Media]]&lt;br /&gt;
[[Category:AV]]&lt;br /&gt;
[[Category:CEC]]&lt;br /&gt;
[[Category:Scripting‏‎]]&lt;br /&gt;
[[Category:Bash]]&lt;/div&gt;</summary>
		<author><name>Henrivb</name></author>
	</entry>
</feed>